package com.aliyun.messagemgt.repository;

import com.aliyun.messagemgt.domain.repository.ListPageConfigRepository;
import com.aliyun.messagemgt.dto.ListPageConfigDto;
import com.aliyun.messagemgt.dto.query.ListPageConfigQuery;
import com.aliyun.messagemgt.entities.ListPageConfigEntity;
import com.aliyun.messagemgt.repository.mappers.ListPageConfigMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yangshaobo
 * @date 2021年10月22日
 */
@Service
public class ListPageConfigMybatisRepository implements ListPageConfigRepository {

    @Autowired
    private ListPageConfigMapper listPageConfigMapper;


    @Override
    public int saveUser(ListPageConfigDto add) {
        ListPageConfigEntity listPageConfigEntity = new ListPageConfigEntity();
        BeanUtils.copyProperties(add, listPageConfigEntity);
        if (add.getId() == null) {
            return listPageConfigMapper.insert(listPageConfigEntity);
        } else {
            return listPageConfigMapper.updateById(listPageConfigEntity);
        }
    }

    @Override
    public List<ListPageConfigDto> queryConfig(ListPageConfigQuery query) {
        QueryWrapper<ListPageConfigEntity> queryWrapper = new QueryWrapper<>();

        if (query.getUser() != null) {
            queryWrapper.eq("user", query.getUser());
        }
        if (query.getTag() != null) {
            queryWrapper.eq("tag", query.getTag());
        }

        List<ListPageConfigEntity> listPageConfigEntities = listPageConfigMapper.selectList(queryWrapper);
        List<ListPageConfigDto> list = new ArrayList<>();
        if (listPageConfigEntities.size() > 0) {
            for (ListPageConfigEntity listPageConfigEntity : listPageConfigEntities) {
                ListPageConfigDto pageConfigDto = new ListPageConfigDto();
                BeanUtils.copyProperties(listPageConfigEntity, pageConfigDto);
                list.add(pageConfigDto);
            }
        }
        return list;
    }
}
